/**
 * 
 */
package hottargui.config;

import hottargui.framework.AttackStrategy;
import hottargui.framework.BoardStrategy;
import hottargui.framework.BuyStrategy;
import hottargui.framework.DiceRollStrategy;
import hottargui.framework.Game;
import hottargui.framework.GameObjectServer;
import hottargui.framework.GameRoundsStrategy;
import hottargui.framework.Position;
import hottargui.framework.RoundsStrategy;
import hottargui.framework.TarguiFactory;
import hottargui.framework.TarguiState;
import hottargui.framework.TurnSequenceStrategy;
import hottargui.framework.WinnerStrategy;
import hottargui.gui.DeltaGuiToolFactory;
import hottargui.standard.StandardBuyState;
import hottargui.standard.StandardBuyStrategy;
import hottargui.standard.StandardEndGameState;
import hottargui.standard.StandardEndRoundState;
import hottargui.standard.StandardEndTurnState;
import hottargui.standard.StandardMoveState;
import hottargui.standard.StandardNewGameState;
import hottargui.standard.StandardTurnSequenceStrategy;
import hottargui.view.GuiToolFactory;

public class DeltaTarguiFactory implements TarguiFactory {

	public TarguiState getAttackState(Game context, Position base, Position target) {
		return null;
	}

	public TarguiState getBuyState(Game context) {
		return new StandardBuyState(context);
	}

	public TarguiState getDefendState(Game context, Position base, Position target) {
		return null;
	}

	public TarguiState getEndGameState(Game context) {
		return new StandardEndGameState(context);
	}

	public TarguiState getEndRoundState(Game context) {
		return new StandardEndRoundState(context);
	}

	public TarguiState getEndTurnState(Game context) {
		return new StandardEndTurnState(context);
	}

	public TarguiState getMoveState(Game context) {
		return new StandardMoveState(context);
	}

	public TarguiState getNewGameState(Game context) {
		return new StandardNewGameState(context);
	}

	public AttackStrategy getAttackStrategy() {
		return null;
	}

	public BoardStrategy getBoardStrategy() {
		return new DeltaBoardStrategy();
	}

	public BuyStrategy getBuyStrategy() {
		return new StandardBuyStrategy();
	}

	public TurnSequenceStrategy getTurnSequenceStrategy() {
		return new StandardTurnSequenceStrategy();
	}

	public WinnerStrategy getWinnerStrategy() {
		return new DecisionWinnerStrategy(new RevenueWinnerStrategy(), new SaltmineWinnerStrategy());
	}

	public GameObjectServer getGameObjectServer() {
		return new GameObjectServer(this);
	}

	public DiceRollStrategy getDiceRollStrategy() {
		return null;
	}

	public GameRoundsStrategy getGameRoundsStrategy() {
		return new RoundsStrategy(25);
	}

	public GuiToolFactory getGuiToolFactory() {
		return new DeltaGuiToolFactory();
	}
}
